#ifndef _COMOUUID_OPTION_H_
#define _COMOUUID_OPTION_H_

#include <iostream>
#include <string>
using namespace std;

class Options {
public:
    inline Options(
        /* [in] */ int argc,
        /* [in] */ char **argv);
    inline bool DoShowUsage() const;
    inline bool DoShowUriString() const;
    inline bool DoGenerateHash() const;
    bool HasErrors() const;
    void ShowErrors() const;
    void ShowUsage() const;
    void ShowUriString(char *str) const;
    inline string getHashString() const;

    bool mCppFormat = false;

private:
    void Parse(
        /* [in] */ int argc,
        /* [in] */ char **argv);

private:
    string mProgram;
    string mIllegalOptions;
    bool mShowUsage = false;
    bool mShowUriString = false;
    bool mShowHashString = false;
    string mHashString;
};

Options::Options(
    /* [in] */ int argc,
    /* [in] */ char **argv) {
    Parse(argc, argv);
}

bool Options::DoShowUsage() const { return mShowUsage; }
bool Options::DoShowUriString() const { return mShowUriString; }
bool Options::DoGenerateHash() const { return mShowHashString; }
string Options::getHashString() const { return mHashString; }


#endif // _COMOUUID_OPTION_H_
